﻿#ifndef CMYTABLEVIEW_H
#define CMYTABLEVIEW_H
/********************************************************************************
** @ Date:2024/02/29
** @ Author: HanJiaXin
** @ Description:通用tableview控件
** @ Version:1.0.0
** @ ClassName:QMyTableView
** @ Fun:
********************************************************************************/
#include <QWidget>
#include <QPainter.h>
#include <qheaderview.h>
#include <qstandarditemmodel.h>
#include "ui_QMyTableView.h"

class QMyTableView : public QWidget
{
	Q_OBJECT

public:
	QMyTableView(QWidget *parent = nullptr);
	~QMyTableView();

	void UpdateStatus();                    //刷新状态（刷新翻页有关的控件状态）
	void UpdateStatus(int nCount);					//根据传入的记录总数刷新状态
	void ShowPage(int nPage);               //显示第nPage页

	void tableOpenMultiChoice();            //表格开启多选模式
	void tableCloseMultiChoice();           //表格关闭多选模式
	bool returnCheckedRowNo(QVector<int>*); //返回所选的行数
	void setPerPageCount(int nPerPageCount);//设置每页显示的行数

private:
	void setStyleSheetFile();	//设置界面样式表
	void preinit();             //预初始化
	void initConnect();         //初始化信号与槽

private slots:
	void on_NextPageBtn();                               //下一页
	void on_PrePageBtn();                                //上一页
	void on_CurrentChanged();                            //combox发生了变化
	void slotCheckBoxChoosePageChecked(int);             //选择本页选择框槽函数
	void slotCheckBoxChooseAllChecked(int);              //选择全部选择框槽函数
	void slotHorizontalHeaderClicked(int, Qt::SortOrder);//行表头被点击
	void slotTableViewRowInserted();                     //表格行增加
	void slotSortIndicatorChanged(int, int);             //测试
	void slotTest(QModelIndex);                          //测试

public:
	Ui::QMyTableViewClass ui;
	int m_nPerPageCount;    //每页显示的行数
	int m_nPageCount;		//总页数
	int m_nCurrentPage;		//当前页数
	int m_nTotalCount;		//记录总数

	QStandardItemModel* m_pModel; //表格数据集

	int m_nSortCol = -1;	//排序的列号 
	int m_nSortOrder;		//排序方式
};

#endif